.TH std::filesystem::begin(recursive_directory_iterator), 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::filesystem::begin(recursive_directory_iterator), \- std::filesystem::begin(recursive_directory_iterator),

.SH Synopsis

   Defined in header <filesystem>
   recursive_directory_iterator begin( recursive_directory_iterator   \fB(1)\fP \fI(since C++17)\fP
   iter ) noexcept;
   recursive_directory_iterator end( recursive_directory_iterator )   \fB(2)\fP \fI(since C++17)\fP
   noexcept;

   1) Returns iter unchanged.
   2) Returns a default-constructed recursive_directory_iterator, which serves as the
   end iterator. The argument is ignored.

   These non-member functions enable the use of recursive_directory_iterators with
   range-based for loops
   and make recursive_directory_iterator a range type
   \fI(since C++20)\fP.

.SH Parameters

   iter - a recursive_directory_iterator

.SH Return value

   1) iter unchanged.
   2) End iterator (default-constructed recursive_directory_iterator).

.SH Example


// Run this code

 #include <cstdlib>
 #include <filesystem>
 #include <fstream>
 #include <iostream>
 namespace fs = std::filesystem;

 int main()
 {
     fs::current_path(fs::temp_directory_path());
     fs::create_directories("sandbox/a/b");
     std::ofstream("sandbox/file1.txt");
     fs::create_symlink("a", "sandbox/syma");

     std::cout << "Print dir structure using OS specific command 'tree':\\n";
     std::system("tree --noreport sandbox");

     std::cout << "\\nPrint dir structure using directory iterator:\\n";
     for (auto& p : fs::recursive_directory_iterator("sandbox"))
         std::cout << p << '\\n';

     fs::remove_all("sandbox");
 }

.SH Possible output:

 Print dir structure using OS specific command 'tree':
 sandbox
 ├── a
 │   └── b
 ├── file1.txt
 └── syma -> a

 Print dir structure using directory iterator:
 "sandbox/syma"
 "sandbox/file1.txt"
 "sandbox/a"
 "sandbox/a/b"

   Defect reports

   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.

      DR    Applied to       Behavior as published             Correct behavior
   LWG 3480 C++17      end took the argument by reference takes the argument by value

.SH See also

   begin(std::filesystem::directory_iterator) range-based for loop support
   end(std::filesystem::directory_iterator)   \fI(function)\fP
   \fI(C++17)\fP
